c库与Linux库io操作

您所在的位置:网站首页 linux 查io c库与Linux库io操作

c库与Linux库io操作

2023-04-01 01:27| 来源: 网络整理| 查看: 265

   1.打开文件 open           2. 通过read 将文件内容访问内存         通过write,将内存中改动的数据,存入文件              3.关闭文件         fclose

       1) fgetc fputc                 fgetc:  从文件中读取#一个字符#到内存   ,它内部 使用了fread实现的.         fputc : 将内存中的 单个字符,写会到 文件中.                  #include

            int fgetc(FILE *stream);                              stream: 文件指针                 返回值: 是一个字符,被强转为了int                         EOF/-1: 表示出错/文件结束                 

    2) fgets  从文件中获取一行数据 ,到内存                       char *fgets(char *s, int size, FILE *stream);             stream:文件指针              s:    存放文件内容的buf              size:指的是 s空间的大小                          返回值:                 NULL 读取结束                 其他 成功                                   1).从文件fp中读取内存,遇到\n结束.在尾部追加\0         2).如果buf不够大,那么 最多读取bufsize-1个字符,最后一个空间被强加\0                  下次fgets的时候,继续读取改行         3) fgets遇到 文件结束,停止工作.                   文件的连续读和写,是如何实现的:  文件内部都有一个整数记录了 当前文件的访问位置.         一开始(open的时候)pos=0;  fread fwrite函数都会修改改指针.                  我们可否主动的调整 位置呢:答案是可以的             1) 获取当前文件位置记录的位置  pos = ftell(fp);             2)主动修改 文件位置记录的位置    fseek(fp,pos, relative-相对论);         

  fopon他的返回值是指针,通过指针为null我们可以知道open失败     但是什么原因导致的失败啊???                    如何获取具体失败原因:             int errno,它标示了具体的错误原因              printf("fopen err,errno:%d errdes:%s\n",errno, strerror(errno));        //errno他是全局变量,由编译器帮你添加,你可以直接使用                                         //系统的函数,比如fopen fread 会将具体错误原因 赋值给errno         perror("fopen err");                       /*errno 他是一个整数,标示了错误原因,但是 每次都查表,累              我们  char *strerror(errno)                  */         /* strerrno 需要配合printf 打印,太麻烦              perror("问题描述");   --->  printf("问题描述:%s\n",strerrno(errno));         */                      ./mycp  fsrc fdest

    程序应该可以获取后面的参数, 后面的参数是字符串构成的一个数组 char *str[] = {"helo","good","night"};                                     当你在中断输入命令 ./xx.out  111 222 333 4444          终端 会将 参数组合为一个 字符串数组 char *argv[] = {所有参数},交给程序xx.out                        int main(int argc,char * argv[])     {         argc表示 数组的个数         argv表示字符串数组             argv[0] 程序本身             argv[1] == "1111"             argv[2] == "2222"                    }            标准C库,是统一的,通用的. 我们基于标准IO写的代码,可以跑在不同的系统上.          linux他没有使用标准C库,它提供glibc库,glibc包含了标准C库.          我们操作文件,可以使用标准IO(标准C库提供的接口)         也可以使用linux专用的接口(文件IO) .                           标准IO         文件IO         fopen        open          fread        read         fwrite         write         fclose         close                  fseek        lseek         ftell              对比:         标准IO       通用性强        访问速度快(内存有个缓冲区)             文件IO    linux专用        要慢一点 (直接访问物理文件)

           

## 其他文件操作接口####          删除文件:                  #include             int unlink(const char *pathname);

    创建目录:         #include        #include

       int mkdir(const char *pathname, mode_t mode);             pathname,你要创建的目录路径             mode,目录的权限 0660                      返回值:                  -1 失败,errno                  0-success      删除目录:              #include        int rmdir(const char *pathname);         返回值:             -1: 失败 errno              0-success 

    查看目录:         获取目录中的内容(普通文件 + 子目录)                  新概念,    目录DIR  文件FILE               目录项,他是 文件和目录的统称.                 一个目录项,既可以是文件,也可以是 目录.                               opendir  打开一个目录             dir = opendir(目录路径)         readdir  读取该目录的每一个内容(目录 + 文件),目录项                           内容(目录,文件) = readdir(dir)                                   closedir  关闭目录             closedir()           

                                                

                           



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3